Κλειστό. Αυτή η ερώτηση χρειάζεται λεπτομέρειες ή σαφήνεια. Αυτήν τη στιγμή δεν δέχεται απαντήσεις. Θέλετε να βελτιώσετε αυτήν την ερώτηση; Προσθέστε λεπτομέρειες και διευκρινίστε το πρόβλημα με την επεξεργασία αυτής της ανάρτησης. Κλειστό πριν από 1 έτος. Βελτιώστε αυτήν την ερώτηση Κάνω κάποια πρόκληση κώδικα και θέλω να λάβω τις πρώτες 3 τιμές από τον πίνακα μου, καθορίζοντας το ευρετήριο εκκίνησης και παίρνοντας μόνο τις πρώτες (3 ή μπορεί να έχουν οποιοδήποτε μήκος) τιμές από το αρχικό ευρετήριο. Δοκίμασα αυτόν τον κώδικα και λειτουργεί, αλλά η δομή του κώδικα είναι πολύ μεγάλη, οπότε πώς μπορώ να το κάνω συντομότερο, ώστε να είναι εύκολο να κατανοηθεί. int n = 10; διπλή υπογραφή = νέο διπλό [] {1, 1, 1}; διπλό [] ret = νέο διπλό [n]; διπλό άθροισμα = 0; ret [0] = υπογραφή [0]; ret [1] = υπογραφή [1]; ret [2] = υπογραφή [2]; int x, i; για (i = 0; i
2021-01-31 08:20:25
Χρησιμοποιώντας το LINQ μπορείτε να δοκιμάσετε κάτι τέτοιο: var τιμές = array. Παράλειψη (ευρετήριο) . Πάρτε (n) .ToArray (); Όπου το ευρετήριο είναι το ευρετήριο του πρώτου αντικειμένου και n ο αριθμός των αντικειμένων που θέλετε να επιλέξετε. Π.χ. https://dotnetfiddle.net/Pk1rwY Ως δευτερεύουσα σημείωση. Η χρήση του LINQ δεν σημαίνει ότι ο κώδικάς σας θα ήταν πιο γρήγορος. Θα ήταν πιο συμπαγές / αναγνώσιμο κ.λπ. Για να εκτιμήσετε πόσο αποτελεσματικός είναι ο κώδικάς σας, πρέπει να χρησιμοποιήσετε κάτι όπως το BenchmarkDotNet | Χωρίς λύση Linq: ιδιωτικό στατικό T [] Extract(T [] source, int fromIndex, int length) { εάν (null == πηγή) ρίξτε νέο ArgumentNullException (nameof (πηγή)); αλλιώς εάν (απόIndex <0) ρίξτε νέο ArgumentOutOfRangeException (nameof (fromIndex), "Από το ευρετήριο πρέπει να είναι μη αρνητικό"). αλλιώς εάν (μήκος <0) ρίξτε νέο ArgumentOutOfRangeException (nameof (length), "Το μήκος πρέπει να είναι μη αρνητικό"). αν (απόIndex> = πηγή. Μήκος || μήκος == 0) επιστροφή νέου T [0]; T [] αποτέλεσμα = νέο T [Math.Min (μήκος, πηγή. Μήκος - απόIndex)]; Array.Copy (πηγή, απόIndex, αποτέλεσμα, 0, αποτέλεσμα. Μήκος); αποτέλεσμα επιστροφής; } Τότε διπλό [] υπογραφή = νέο διπλό [] {0, 1, 2, 3, 4, 5}; διπλό [] ret = Απόσπασμα (υπογραφή, 3, 2); Console.Write (string.Join (",", ret)); Αποτέλεσμα: 3, 4 | Από την ερώτησή σας, πρέπει να εκμεταλλευτείτε τους χειριστές. Πάρτε και. var result = array.Skip (έναρξηIndex). Λήψη (numberOfElements) Από τον κωδικό σας λοιπόν, φαίνεται ότι προσπαθείτε να κάνετε κάτι διαφορετικό, δηλαδή άθροισμα στοιχείων. Ο χειριστής .Sum μπορεί να σας βοηθήσει εδώ. | Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα c # arrays linq ή κάντε τη δική σας ερώτηση.